Next | Prev | Up | Top | Contents | Index
Page Numbers and Offsets
IRIX manages memory in units of a page. The size of a page can differ from one system to another. The size when 32-bit addressing is used is 4,096 bytes. In each 32-bit virtual address,
- the least-significant 12 bits specify an offset from 0 to 0x0fff within a page
- the most-significant 20 bits specify a virtual page number (VPN)
The page size when 64-bit addressing is used is greater than 4,096 bytes, and can differ between versions of IRIX, but the bits of the virtual address are used in the same way: the least-significant bits of an address specify an offset within a page, while the most-significant bits specify the VPN.
You can learn the actual size of a page in the present system with getpagesize(), as noted under "Interrogating the Memory System".
Page tables, built by IRIX during a fork() or exec() call, define the address space by specifying which VPNs are defined. These tables are consulted by the hardware. Recently used table entries are cached for instant lookup in the processor chip, in an array called the Translation Lookaside Buffer (TLB).
Next | Prev | Up | Top | Contents | Index